package com.itfenghuang.day02;

public class A03_Codekuai代码块 {
    //    1.概述
//        1)什么是代码块?
    {
    }

    //        2)分类
//            局部代码块,构造代码块,静态代码块   static
//     2.局部代码块在方法类定义的
//        1) 写在哪里:方法内
//        2)局部代码块里面些什么
//                以前在方法体中可以写什么  局部代码块中就可以写什么
//        3)作用:可以让变量更早的从内存中消失,从而节约资源
//     3.构造代码块
//        1)写在哪里:类中,方法外
//        2)什么时候执行,怎么执行?
//                    创建对象的时候,先执行构造代码块在执行构造方法
//        3)作用?
//                    可以将多个方法中相同的内容提取出来放到构造代码证   提高代码的复用性
//      4.静态代码块
//            1)执行时机:先执行静态代码块在执行构造代码块
//                    类加载的时候执行静态代码块,且执行一次
//            2)作用: 游戏中创建角色进行初始化
//    面试题:在父子类中静态代码块  构造代码块   构造方法的执行顺序
//            父类静态代码块---子类静态静态代码块---父类构造代码块---子类构造代码块---父类构造方法---子类构造方法

    public static void main(String[] args) {
//        {
//            String name="小艺";
//            System.out.println(name);
//        }
//        System.out.println(name);
//        Dog dog = new Dog();
//        Dog dog1 = new Dog();
        Zi1 zi1 = new Zi1();

    }
}
//    class Dog {
//        public String name;
//        public String color;
//        static {
//            System.out.println("静态代码块");
//        }
//
//        {
//            System.out.println("构造代码块");
//        }
//
//        public Dog() {
//
//            System.out.println("空参构造");
//        }
//
//        public Dog(String name, String color) {
//            this.name = name;
//            this.color = color;
//        }
//    }
//测在父子类中静态代码块  构造代码块   构造方法的执行顺序
class Fu1{
    public String name;

    {
        System.out.println("父类构造代码块");
    }
    static {
        System.out.println("父类静态代码块");
    }


    public Fu1() {
        System.out.println("父类构造方法");
    }

    public Fu1(String name) {
        this.name = name;
    }
}

class Zi1 extends Fu1{
    public String name;

    static {
        System.out.println("子类静态代码块");
    }

    {
        System.out.println("子类构造代码块");
    }

    public Zi1() {
        System.out.println("子类构造方法");
    }

    public Zi1(String name) {
        this.name = name;
    }
}